package grafico;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;

import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
import javax.swing.border.Border;

import voxToolkit.VoxButton;

import main.Contexto;

public class Fabrica 
{
	public static Color background = new Color(51, 51, 102);
	public static Color azulMedio = new Color(51,51,140);
	public static Color branco = new Color(255,255,255);
	public static Dimension dimensaoBotao = new Dimension(40, 40);
	public static Font fonteMedia = new Font("cg", Font.BOLD, 20);
	public static Font fonteGrande = new Font("cg", Font.BOLD, 26);
	public static Border bordaClara = BorderFactory.createLineBorder(Color.white);
	public static Border bordaEscura = BorderFactory.createLineBorder(background);
	
	public static String criaToolTip( String dica )
	{
		return "<html><body bgcolor='#327EAE' text='#FFFFFF'><h2>&nbsp;" + 
			   dica +"&nbsp;</h2></body></html>";
	}

	public static VoxButton botaoComImagem(String imagem, String dica) 
	{
		return new VoxButton(imagem, dica);
	}
	
	public static JButton botaoLogo(String imagem) 
	{
		Contexto contexto = Contexto.instancia();

		Icon figura = new ImageIcon( contexto.getDirImagem() + imagem + ".gif" );
		
		JButton botao = new JButton(figura);
		
		botao.setBorderPainted(false);
		botao.setFocusPainted(false);
		botao.setBackground(new Color(51, 51, 102));
		
		return botao;
	}
	
	public static JPanel painelFundoAzul()
	{
		JPanel painel = new JPanel();
		
		painel.setBackground( background );
		
		return painel;
	}
	
	public static JLabel labelBranco(String texto)
	{
		ControleEventos ctrlEventos;
		ctrlEventos = ControleEventos.instancia();

		JLabel label = new JLabel(texto);

		label.setForeground( Color.white );
		label.setFont( fonteMedia );
		label.setBackground( background );
		label.setFocusable(true);

		label.addFocusListener( ctrlEventos );
		label.addMouseListener( ctrlEventos );

		return label;
	}
	
	public static JTextField entradaTexto( String dica )
	{
		ControleEventos ctrlEventos;
		ctrlEventos = ControleEventos.instancia();

		JTextField txt = new JTextField();
		txt.setPreferredSize(new Dimension(10, 20));
		txt.setToolTipText( criaToolTip(dica) );
		txt.setMaximumSize(new Dimension(70, 30));
		txt.setFont( fonteMedia );

		txt.addFocusListener(ctrlEventos);
		txt.addMouseListener(ctrlEventos);

		return txt;
	}
	
	public static JComboBox comboBox( String dica )
	{
		ControleEventos ctrlEventos;
		ctrlEventos = ControleEventos.instancia();

		String[] niveis = { "Capítulo", "Seção", "Parágrafo" };
		
		JComboBox cmb = new JComboBox(niveis);
		
		cmb.setToolTipText( criaToolTip(dica) );
		cmb.setFont( fonteMedia );
		cmb.addFocusListener(ctrlEventos);
		cmb.addMouseListener(ctrlEventos);
	
		return cmb;
	}
	
	public static JFrame janelaErro()
	{
		JFrame frame = new JFrame();
		frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		frame.setSize(new Dimension(300,100));

		Container principal = frame.getContentPane();
		principal.setLayout(new BorderLayout());
		principal.setBackground(background);
		
		JLabel titulo_janela = new JLabel("Ocorreu um erro");
		titulo_janela.setForeground(branco);
		titulo_janela.setFont(fonteGrande);
		principal.add(titulo_janela, BorderLayout.NORTH);
		
		return frame;	
	}
}
